/**
 * CMD命令执行下列所有操作命令：
 *  node 设置环境变量(临时)：     set NODE_ENV=test 
 *       查看环境变量(临时)：     set NODE_ENV     
   根据设置环境变量对应在development、test、production、...模式下创建数据库操作数据库等
    迁移  sequelize脚手架     .\node_modules\.bin\sequelize 查看所有命令

    1.安装 sequelize-cli        (依赖sequelize mysql2)
    2.初始化 .\node_modules\.bin\sequelize init           创建文件、文件夹
                -config :   包含配置文件 告诉cli如何连接数据库
                -models :   包含项目中所有的模型         定义模型   （用于操作数据库表）
                -migrations :   包含所有的迁移文件       迁移/更改  （创建、修改表操作）      
                -seeders :  包含所有种子文件             测试数据 （增删数据操作）

     .\node_modules\.bin\sequelize db: 关于数据库的操作(db)
         db:create         创建数据库     根据环境变量 config/config.json 配置文件
         db:drop           删除数据库

   3.创建模型：model:create --name 模型名称 --attributes 字段列表
      .\node_modules\.bin\sequelize model:create --name User --attributes username:STRING  (默认会自动创建主键id)

   4.执行迁移(对数据库表进行结构的创建，升级，修改等操作)
      db:migrate  (会在数据库中创建一个SequelizeMeta表，用于记录每次的迁移记录；执行migrations文件下的满足条件（SequelizeMeta表）的脚本)  （执行migrations文件下的up方法）
      db:migrate:status          查看迁移状态    up：已迁移      down：未迁移
      db:migrate:undo            撤销上一次迁移                            （执行migrations文件下的down方法）
      db:migrate:undo:all        撤销所有迁移 
      db:migrate:undo --name 具体迁移的脚本文件（20210423031914-create-user）    撤销指定迁移   

   // 对模型文件中字段的修改时需要 创建新的迁移 migration:create --name 迁移名称  
   5. .\node_modules\.bin\sequelize migration:create --name UserAddAge     假设创建新的迁移文件UserAddAge用于给user表添加新的age字段
      通过QueryInterface类中的方法实现 https://sequelize.org/master/class/lib/dialects/abstract/query-interface.js~QueryInterface.html
         QueryInterface.addColumn('Users','age',{
            type:Sequelize.TINYINT,
            allowNull:false,
            defaultValue:0
         })
      然后再次执行迁移  (并不会影响原有的内容，而是在原有内容基础上修改（新增、删除等操作）)
   
   6.创建种子文件（测试数据）  seed:create --name userDataTest
         db:seed --seed 20210425061846-testData(指定的种子文件)  运行指定种子文件
         db:seen:all              运行所有种子文件
         db:seed:undo             撤销上一次种子文件
      默认情况下，种子文件记录不会被存储，如需要存储则手动在config配置中设置，seederStorage     https://www.sequelize.com.cn/other-topics/migrations#%E5%AD%98%E5%82%A8
 */